package com.qf.index.gcrdo;


import cn.hutool.db.Db;
import cn.hutool.db.Entity;
import cn.hutool.db.ds.DSFactory;
import com.qf.index.gcrdo.httpclient.SmallTool;
import lombok.extern.slf4j.Slf4j;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;


@Slf4j
public class CheckDrug {

    public static void main(String[] args) throws Exception {

        // https://go.drugbank.com/unearth/q?searcher=drugs&query=glycyrrhiza+glabra+processed+root&button=
        // 上面地址用不了 使用 下面地址
        // https://pubchem.ncbi.nlm.nih.gov/#query=siberian%20ginseng%20root%20extract
        // 2025年5月16日15:43:20 最后 使用 drugbanks 进行下载的药物excel 进行匹配只要匹配到了就是药物 统一转小写

        // 这个网站也可以药物
        // 药物，数字代号：1; 基因，数字代号：2; 通路，数字代号：3; 疾病，数字代号：4
        Db use = Db.use(DSFactory.get("localdb"));
        List<Entity> query = use.query("select * from word_and_code_set_map_new where type = '药物'  and  check4 is null ");
        SmallTool.printMessError("查询到的数量："+query.size());

        String drugTable = "drugbanck_vocabulary";
        List<Entity> query1 = use.query("select * from " + drugTable);
        List<String> drugList = new ArrayList<>();
        for (Entity entity : query1) {
            String name = entity.getStr("Common_name");
            if (StringUtil.isNotNull(name)) {
                drugList.add(name.toLowerCase());
            }
            String synonyms = entity.getStr("Synonyms");
            if (StringUtil.isNotNull(synonyms)) {
                String[] split = synonyms.split(" \\| ");
                for (String s : split) {
                    if (StringUtil.isNotNull(s)) {
                        drugList.add(s.toLowerCase());
                    }
                }
            }
        }
        System.out.println("全部drug药物标准名和别名数量+"+drugList.size());
//        if (drugList.size() > 0) {
//            return;
//        }
        for (Entity entity : query) {
            String word = entity.getStr("word");
            Integer id = entity.getInt("id");
            if (id.intValue() == 160) {
                System.out.println(160);

            }
            if (StringUtil.isNotNull(word)) {
                if (drugList.contains(word.toLowerCase())) {
                    // 校验成功
                    System.out.println("找到了");
                    entity.set("check4", "是");
                    try {
                        use.insertOrUpdate(entity, "id");
                    } catch (SQLException e) {
                        throw new RuntimeException(e);
                    }
                }else {
                    entity.set("check4", "不是");
                    try {
                        use.insertOrUpdate(entity, "id");
                    } catch (SQLException e) {
                        throw new RuntimeException(e);
                    }

                }
            }
        }
        System.out.println("全部结束");

    }

}


